package cn.tedu.tmall.front.content.service;

import cn.tedu.tmall.common.consts.data.ContentConsts;
import cn.tedu.tmall.common.pojo.vo.PageData;
import cn.tedu.tmall.front.content.pojo.vo.ArticleListItemVO;
import cn.tedu.tmall.front.content.pojo.vo.ArticleStandardVO;
import org.springframework.transaction.annotation.Transactional;

/**
 * 处理文章数据的业务接口
 *
 * @author java@tedu.cn
 * @version 3.0
 */
@Transactional
public interface IArticleService extends ContentConsts {

    /**
     * 根据ID查询文章
     *
     * @param id 文章ID
     * @return 匹配的文章数据详情，如果没有匹配的数据，则返回null
     */
    ArticleStandardVO getStandardById(Long id);

    /**
     * 查询推荐的文章列表，将使用默认的每页记录数
     *
     * @param pageNum 页码
     * @return 文章列表
     */
    PageData<ArticleListItemVO> listByRecommend(Integer pageNum);

    /**
     * 查询推荐的文章列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 文章列表
     */
    PageData<ArticleListItemVO> listByRecommend(Integer pageNum, Integer pageSize);

    /**
     * 根据类别查询文章列表，将使用默认的每页记录数
     *
     * @param categoryId 文章类别的ID
     * @param pageNum    页码
     * @return 文章列表
     */
    PageData<ArticleListItemVO> listByCategory(Long categoryId, Integer pageNum);

    /**
     * 根据类别查询文章列表
     *
     * @param categoryId 文章类别的ID
     * @param pageNum    页码
     * @param pageSize   每页记录数
     * @return 文章列表
     */
    PageData<ArticleListItemVO> listByCategory(Long categoryId, Integer pageNum, Integer pageSize);

}
